#include <stdio.h>     // 提供标准输入输出函数，如 printf, scanf, fgets
#include <string.h>    // 提供字符串处理函数，如 strtok, strlen, strcspn
#include <stdlib.h>    // 提供内存与类型转换函数，如 atoi, malloc, free

#define MAX 1000       // 定义最大数组长度

// step 1# 定义全局二维数组 arr 存储所有输入数组
int arr[MAX][MAX];         // 存放 arrNum 个数组，每个数组不超过 MAX 个元素
int arrLen[MAX] = {0};     // 存放每个数组的实际长度
int arrIndex[MAX] = {0};   // 存放每个数组当前打印的位置索引

// step 2# 读取一行逗号分隔的字符串，并转换成整数数组存入 arr[i]
void readData(char *const input, int i) {
    fgets(input, sizeof(char) * MAX, stdin);       // 读取一整行字符串
    input[strcspn(input, "\n")] = 0;               // 去除末尾换行符
    char *token = strtok(input, ",");             // 使用逗号分割字符串
    while (token != NULL) {
        arr[i][arrLen[i]++] = atoi(token);        // 将分割后的字符串转为整数存入 arr
        token = strtok(NULL, ",");
    }
}

int main() {
    // step 3# 读取初始参数：每次读取的长度 k，以及数组个数 arrNum
    int k;
    int arrNum;
    scanf("%d%d\n", &k, &arrNum);  // 输入格式：k arrNum（以空格分隔）

    // step 4# 依次读取 arrNum 行数组输入
    for(int i = 0; i < arrNum; i++) {
        char input[MAX];
        readData(input, i);  // 将第 i 行数据读入 arr[i]
    }

    // step 5# 按照每次从每个数组读取 k 个数的方式轮流输出，直到所有数组读取完
    int left = arrNum;  // 剩余未读完的数组个数

    while (left) {
        // step 6# 遍历每个数组 arr[i]
        for(int i = 0; i < arrNum; i++) {
            int printLeft = k;  // 当前数组本轮可打印的元素个数（最多 k 个）

            // step 7# 从 arr[i] 当前索引位置开始打印
            while (printLeft && arrIndex[i] < arrLen[i]) {
                // 特殊情况：最后一个元素，避免末尾多余逗号
                if (left == 1 && arrIndex[i] == arrLen[i] - 1) {
                    printf("%d", arr[i][arrIndex[i]]);  // 最后一个元素不加逗号
                    left--;  // 标记该数组已全部读完
                    break;
                } else {
                    printf("%d,", arr[i][arrIndex[i]]);  // 正常情况输出并加逗号
                    arrIndex[i]++;  // 索引向前推进
                    printLeft--;    // 本轮剩余可打印数减少
                }

                // step 8# 如果该数组已经全部读完
                if (arrIndex[i] == arrLen[i]) {
                    left--;  // 总数组剩余数量减少
                }
            }
        }
    }

    return 0;
}
